You can improve the performance of your Kanzi application by reducing the amount of vertex data in the meshes the application shows. When you reduce the amount of mesh vertex data, the size of the kzb file and the amount of GPU memory required at runtime decrease.
You can change vertex data of a mesh using the Mesh Attributes Editor.
For example, you can use the Mesh Attributes Editor to remove the attributes you do not use and select the optimal data type for your needs. 
To edit mesh attributes:


The status bar at the bottom of the Mesh Attributes Editor shows the size of the mesh vertex data if you export the kzb file with the values you have currently set in the Export table.
To optimize your meshes, set for each mesh attribute the data type that occupies the least amount of space while providing enough visual accuracy for your needs. Kanzi uses the data type when storing the attribute to the GPU memory and exporting it to the kzb file. When you use data types that occupy less space, the size of the kzb file and the amount of GPU memory required at runtime decrease. See Data types for mesh attributes.
To set the optimal data type for a mesh attribute:




| Semantic | Recommended data type | Kanzi Engine normalizes before export |
|---|---|---|
| Position | Based on data range | |
| Normal, Tangent, Bitangent |
| x |
| Texture coordinate | Based on data range, 16_UNORM / 16_SNORM / Float | |
| Color | Based on data range, 8_UNORM / Half-float / Float | |
| Weight | Based on data range | |
| Matrix palette | Based on data range | |
This table lists the mesh attribute data types that Kanzi supports.
| Availability for Target Graphics API | |||||
|---|---|---|---|---|---|
| Data type | Description | Range | OpenGL ES 2.0 | OpenGL ES 2.0 Extension Pack | OpenGL ES 3 |
| Float | Single-precision floating-point (32 bits) | x | x | x | |
| Half-float | Half-precision floating-point (16 bits) | x | x | ||
| 8_SNORM | 8-bit signed normalized | -1.0f ... 1.0f | x | x | x |
| 8_UNORM | 8-bit unsigned normalized | 0.0f ... 1.0f | x | x | x |
| 16_SNORM | 16-bit signed normalized | -1.0f ... 1.0f | x | x | x |
| 16_UNORM | 16-bit unsigned normalized | 0.0f ... 1.0f | x | x | x |
| 8_SINT | 8-bit signed integer | -128 ... 127 | x | ||
| 8_UINT | 8-bit unsigned integer | 0 ... 255 | x | ||
| 16_SINT | 16-bit signed integer | -32 768 ... 32 767 | x | ||
| 16_UINT | 16-bit unsigned integer | 0 ... 65,535 | x | ||
| 32_SINT | 32-bit signed integer | -2 147 483 648 ... 2 147 483 647 | x | ||
| 32_UINT | 32-bit unsigned integer | 0 ... 4 294 967 295 | x | ||
| 32_SNORM | 32-bit signed normalized | -1.0f ... 1.0f | x | ||
| 32_UNORM | 32-bit unsigned normalized | 0.0f ... 1.0f | x | ||
| 2_10_10_10_SNORM_PACK32 | Four-component 32-bit packed signed normalized with:
|
(-1, -1, -1, -1) ... (1, 1, 1, 1) | x | ||
| 2_10_10_10_UNORM_PACK32 | Four-component 32-bit packed unsigned normalized with:
|
(0, 0, 0, 0) ... (1, 1, 1, 1) | x | ||